﻿using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Drawing;
using Applee.FractCommon;

namespace TestProject
{
    /// <summary>
    /// UnitTestMathUtils 的摘要说明
    /// </summary>
    [TestClass]
    public class UnitTestMathUtils
    {
        public UnitTestMathUtils()
        {
            //
            //TODO: 在此处添加构造函数逻辑
            //
        }

        private TestContext testContextInstance;

        /// <summary>
        ///获取或设置测试上下文，该上下文提供
        ///有关当前测试运行及其功能的信息。
        ///</summary>
        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        #region 附加测试属性
        //
        // 编写测试时，还可使用以下附加属性:
        //
        // 在运行类中的第一个测试之前使用 ClassInitialize 运行代码
         [ClassInitialize()]
         public static void MyClassInitialize(TestContext testContext) { }
        
         //在类中的所有测试都已运行之后使用 ClassCleanup 运行代码
         [ClassCleanup()]
         public static void MyClassCleanup() { }
        
         //在运行每个测试之前，使用 TestInitialize 来运行代码
         [TestInitialize()]
         public void MyTestInitialize() { }
        
         //在每个测试运行完之后，使用 TestCleanup 来运行代码
         [TestCleanup()]
         public void MyTestCleanup() { }
        
        #endregion

        [TestMethod]
        public void TestMethod1()
        {
            //
            // TODO: 在此	添加测试逻辑
            //

            TestPoint(new PointF(1, 1), new PointF(2, 2));
            TestPoint(new PointF(1, -1), new PointF(2, -2));
            TestPoint(new PointF(-1, 1), new PointF(-2, 2));
            TestPoint(new PointF(-1, -1), new PointF(-2, -2));
            TestPoint(new PointF(0, 1), new PointF(0, 2));
            TestPoint(new PointF(0, -1), new PointF(0, -2));
            TestPoint(new PointF(1, 0), new PointF(2, 0));
            TestPoint(new PointF(-1, 0), new PointF(-2, 0));
        }

        private void TestPoint(PointF pt1, PointF pt2)
        {
            float fD = MathUtils.Distance(pt1, pt2);
            PointF point = MathUtils.ExtendPoint(new PointF(), pt1, fD);
            Assert.IsTrue(MathUtils.IsEqual(point, pt2));
        }
    }
}
